package com.btl.service.ai.support.rag.embedding.strategy;

import dev.langchain4j.rag.content.Content;
import dev.langchain4j.rag.query.Query;
import dev.langchain4j.store.embedding.filter.Filter;

import java.util.List;

/**
 * RetrieverStrategy
 */
public interface RetrieverStrategy {

    /**
     * 检索
     *
     * @param query          查询内容
     * @param collectionName 集合名称
     * @param filter         过滤器
     * @param maxResults     topK数量
     * @return 内容
     */
    List<Content> retriever(String collectionName, Double minScore, Integer maxResults, Filter filter, Query query);

    /**
     * 检索
     *
     * @param query          查询内容
     * @param collectionName 集合名称
     * @return 内容
     */
    List<Content> retriever(String collectionName, Query query);

    /**
     * 检索
     *
     * @param collectionName 集合名称
     * @param filter         过滤条件
     * @param query          查询内容
     * @return 内容
     */
    List<Content> retriever(String collectionName, Filter filter, Query query);

    /**
     * 获取模型
     *
     * @return 模型
     */
    EmbeddingModelTypeEnum modelType();
}
